OWASP IoT Testing Guidanceのガイダンス
こんにちは、虎塚です。
IoT (Internet of Things) 分野のソリューションを利用したサービスや製品を考える際には、もちろんセキュリティ面の検討も必要です。
OWASPでは、IoTのセキュリティについて扱うプロジェクトOWASP Internet of Things Projectがあり、Webやモバイルのそれと同じように「OWASP Internet of Things Top 10」がCC-by-SAライセンスで公開されています。
今回は、関連資料の「OWASP IoT Testing Guidance」をご紹介します。IoTセキュリティに関するチェック事項が、1つの画像ファイルにコンパクトにまとめられて公開されています。
よく見るとロボットのボディに"DEF CON"の文字があるので、DEF CONでの配布物だったのでしょうか。ゲームを連想させるかわいらしいデザインですね。
中身をざっくりと見てみましょう。
OWASP IoT Testing Guidance
セキュアでないWebインタフェース
- あらゆるWebインタフェースで弱いパスワードが許可されていないか
- アカウントのロックアウトの仕組み
- WebインタフェースがXSS、SQLインジェクション、CSRFやその他の脆弱性について対策されているか
- HTTPSの利用によって情報の送信が保護されているか
この項目は、Webアプリケーションのセキュリティで気にすることの延長にあるようですね。
転送の暗号化の欠如
採用するソリューションで、暗号化がどのように使われているかに気を配る必要があります。
- デバイス間、デバイスとインターネット間のコミュニケーションに、暗号化が使用されているか
- 暗号化のプラクティスが受け入れられていて、プロプライエタリなプロトコルを避けているか
- ファイアウォールオプションを有効化できるか、有効化しているか
デバイスとインターネット間だけでなく、デバイス同士の通信で、どんなプロトコルや暗号化方式が使われているかを確認する必要があります。
また、仕様が秘密にされている暗号ではなく、専門家によって強度が確認された暗号を採用しなければならないというセキュリティの原則にも触れられています。CRYPTREC暗号リスト(電子政府推奨暗号リスト)に掲載されているものを選択するとよいでしょう。
不十分なセキュリティの環境設定
採用するソリューションの設定についても、細かい確認事項があります。
- パスワードのセキュリティオプションが利用できるか
- 暗号化オプションが利用できるか(たとえば、AES-128がデフォルト設定の場合にAES-256を利用できるか)
- セキュリティイベントをログに記録できるか
単に機能が使えることをチェックするだけではなく、何が設定可能かを確認しましょう。
貧弱な物理セキュリティ
使用するデバイスについて、次のことを確認しましょう。
- デバイス上の物理的な外部ポート (USBポートなど) は、最小限だけ使用しているか
- 不必要なUSBポートを介してのようにデバイスが意図しない方法でアクセスされないか
汎用機と違い、外部ポートはあればあるだけ便利という観点だけでなく、目的に必要な最小限の数に抑えたほうがセキュアだという観点が必要です。
不完全な認証/認可
採用するソリューションの認証/認可の仕組みについて、次の事項を確認しましょう。
- 認証が必要なところでは強いパスワードを使用しているか
- 可能な部分で二要素認証が実装されているか
- パスワードリカバリの仕組みがあるか
- 強いパスワードを要求するオプションがあるか
- 一定期間後にパスワードが強制的に期限切れになるオプションがあるか
- デフォルトのユーザ名とパスワードを変更するオプションがあるか
セキュアでないクラウドインタフェース
デバイスをクラウド上のシステムやデータストアと通信させることは、IoT関連サービスでは一般的です。クラウドベースのWebインタフェースについて、次の観点でセキュリティをチェックします。
- セキュリティ脆弱性への対策
- 弱いパスワードを拒否していること
- アカウントロックアウトの機構を持っていること
- 二要素認証が使われていること
- XSS、SQLインジェクション、CSRFやその他の脆弱性への対策
- すべてのクラウドインタフェースでデータの送信が暗号化されていること
- 強いパスワードを要求するオプションが利用できるか
一部ではなくすべてのクラウドインタフェースで、データ送信に暗号化を利用するべき、とされる背景には、セキュリティは鎖である (弱いところから切れる) という考え方がベースにあるのではと思います。
セキュアでないソフトウェア/ファームウェア
ソフトウェアやファームウェアを作成したりカスタマイズしたりしてIoTサービスに組み込む際には、次のことを確認しましょう。
- ソフトウェアやファームウェアがアップデートできること。また、脆弱性が発見された時に素早くアップデートできること
- 暗号化されたアップデートファイルを使用していること。また、そのファイルの配布には暗号化が使用されていること
- 署名ファイルを使用していること。また、インストール前に署名ファイルの検証をおこなうこと
アップデート方法を確認しておくことは大事です。また、アップデートの際にはすべての機器にいきなり適用するのではなく、まずは1つだけアップデートする、というような手順の整備も、検証時から必要でしょう。
さらに、アップデートファイル自体の改ざんを防ぐために、ここでも暗号化が必要とされています。ハッシュ値などの署名ファイルを併用して、安全なアップデート手順を用意することが大切です。
プライバシーへの配慮
- 収集する個人情報の量
- 収集された個人情報は、保存時や送信時に暗号化を使用して適切に保護されているか
- 収集したデータは個人を特定可能なものか、それとも匿名性の高いものか
IoTデバイスで利用者のプライバシーに関わるデータを収集する場合には、上記のような注意が必要ですね。収集するデータの性質を理解することも重要です。
セキュアでないモバイルインタフェース
- 弱いパスワードを拒否していること
- アカウントロックアウトの機構を持っていること
- 二要素認証を実装しているか
- 送信データを暗号化しているか
- 強いパスワードを要求するオプションを利用できるか
- 一定期間後にパスワードの有効期限が切れるオプションを利用できるか
- デフォルトのユーザ名とパスワードを変更できるか
- 収集する個人情報の量
Webインタフェースやクラウドインタフェースで確認が要求される内容は、モバイルインタフェースでも同じように確認する必要があります。
セキュアでないネットワークサービス
利用するネットワークのセキュリティについても言及されています。
- ネットワークサービスがバッファオーバーフロー、ファジング、DoS攻撃などに応答しないようになっているか
- テスト用のポートが存在しないか
おわりに
OWASP IoT Testing Guidanceの内容を一巡りしてみました。簡潔なチェックリストになっているため、ざっと眺めるだけでも考慮漏れを予防することができそうで有用ですね。OWASPのサイトにはほかにもいろいろと有用な資料がありますので、またご紹介できればと思います。
IoTで"何ができるか"に着目しているフェーズから実用段階へ移行する頃には、セキュリティやパフォーマンス、運用などの非機能の観点から、サービスや製品をブラッシュアップする必要があるでしょう。そのためにも準備が大切だと思います。
それでは、また。